-- @owner: @nanyang12
-- @date: 2025/4/1
-- @testpoint:使用postgresql风格创建同名参数类型不同的重载函数，language为pltsql

--连接D库
@conn PrimaryDbDmode;
--创建插件
--create extension shark;
--创建函数
CREATE OR REPLACE FUNCTION calculate(a INT, b INT)
RETURNS INT
LANGUAGE pltsql
AS $$
DECLARE
 result INT;
BEGIN
 result := a + b;
 RETURN result;
END;
$$;
/
--创建重载函数
CREATE OR REPLACE FUNCTION calculate(a DECIMAL, b DECIMAL)
RETURNS DECIMAL
LANGUAGE pltsql
AS $$
DECLARE
 result DECIMAL;
BEGIN
 result := a + b;
 RETURN result;
END;
$$;
/
-- 调用接收整数参数的 calculate 函数
SELECT calculate(3, 5);
-- 调用接收 DECIMAL 参数的 calculate 函数
SELECT calculate(3.5, 5.2);
--查询
select proname,pronargs from pg_proc where proname ='calculate';
select l.lanname from pg_language l join pg_proc p on l.oid = p.prolang and p.proname in('calculate');
--清理环境
drop function calculate(int,int);
drop function calculate(decimal,decimal);